package com.lcredu.springboot.config;

import com.lcredu.springboot.entity.Car;
import com.lcredu.springboot.entity.Monster;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.format.FormatterRegistry;
import org.springframework.util.ObjectUtils;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author 黎长容
 * @date 2025-08-12 20:00
 */
//lite 模式下，直接返回新实例对象
@Configuration(proxyBeanMethods = false)
public class WebConfig {
    /**
     * 创建一个自定义转换器将String转换成Car
     * 该方法配置了一个WebMvcConfigurer Bean，用于注册自定义的类型转换器
     *
     * @return WebMvcConfigurer 配置对象，包含自定义的字符串到Car对象的转换逻辑
     */
    @Bean
    public WebMvcConfigurer webMvcConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addFormatters(FormatterRegistry registry) {
                registry.addConverter(new Converter<String, Car>() {
                    @Override
                    public Car convert(String source) {
                        // 判断源字符串是否为空
                        if (!ObjectUtils.isEmpty(source)) {
                            Car car = new Car();
                            // 按逗号分割字符串，第一个元素为名称，第二个元素为价格
                            String[] split = source.split(",");
                            car.setName(split[0]);
                            car.setPrice(Double.parseDouble(split[1]));
                            return car;
                        }
                        return null;
                    }
                });
            }
        };


//        return new WebMvcConfigurer() {
//            @Override
//            public void addFormatters(FormatterRegistry registry) {
//                // 注册自定义转换器，将字符串格式转换为Car对象
//                Converter<String, Car> carConverter = new Converter<String, Car>() {
//                    @Override
//                    public Car convert(String source) {
//                        // 判断源字符串是否为空
//                        if (!ObjectUtils.isEmpty(source)) {
//                            Car car = new Car();
//                            // 按逗号分割字符串，第一个元素为名称，第二个元素为价格
//                            String[] split = source.split(",");
//                            car.setName(split[0]);
//                            car.setPrice(Double.parseDouble(split[1]));
//                            return car;
//                        }
//                        return null;
//                    }
//                };

//                Converter<String, Monster> monsterConverter = new Converter<String, Monster>() {
//                    @Override
//                    public Monster convert(String s) {
//                        return null;
//                    }
//                };
//
//                Converter<String, Car> carConverter2 = new Converter<String, Car>() {
//
//                    @Override
//                    public Car convert(String s) {
//                        return null;
//                    }
//                };

//                registry.addConverter(carConverter);
//                registry.addConverter(monsterConverter);
//                registry.addConverter(carConverter2);
//            }
//        };
    }

}
